<?php
  require("Unidade.php");
  
  class Configuracoes {
    private $idUESA;
    private $descricaoUESA;
    private $idsUsuariosUESA;
    private $logoUESA;
    
    private $idUESJ;
    private $descricaoUESJ;
    private $idsUsuariosUESJ;
    private $logoUESJ;
    
    private $nomeCliente;
    private $idsUsuariosGC;
    private $idsUsuariosUTS;
    private $idsUsuariosUN;
    private $idProjetoPai;
    private $idCampoSprint;
    private $idCampoStoryPoint;
    private $idCampoCompletude;
    private $idTagToVerify;
    private $idTagVerified;
    private $idTagOffsprint;
    private $rootMantis;
    private $ajaxTimeout;
    private $alternateTimeout;
    private $prefixosRemoviveis;
    private $abreviaturas;
    
    function __construct($aIdUESA, $aDescricaoUESA, $aIdsUsuariosUESA, $aLogoUESA, $aIdUESJ, $aDescricaoUESJ, $aIdsUsuariosUESJ, $aLogoUESJ, $aNomeCliente, $aIdsUsuariosGC, $aIdsUsuariosUTS, $aIdsUsuariosUN, $aIdProjetoPai, $aIdCampoSprint, $aIdCampoStoryPoint, $aIdCampoCompletude, $aIdTagToVerify, $aIdTagVerified, $aIdTagOffsprint, $aRootMantis, $aAjaxTimeout, $aAlternateTimeout, $aPrefixosRemoviveis, $aAbreviaturas) {
      $this->idUESA = $aIdUESA;
      $this->descricaoUESA = $aDescricaoUESA;
      $this->idsUsuariosUESA = $aIdsUsuariosUESA;
      $this->logoUESA = $aLogoUESA;
      $this->idUESJ = $aIdUESJ;
      $this->descricaoUESJ = $aDescricaoUESJ;
      $this->idsUsuariosUESJ = $aIdsUsuariosUESJ;
      $this->logoUESJ = $aLogoUESJ;
      $this->nomeCliente = $aNomeCliente;
      $this->idsUsuariosGC = $aIdsUsuariosGC;
      $this->idsUsuariosUTS = $aIdsUsuariosUTS;
      $this->idsUsuariosUN = $aIdsUsuariosUN;
      $this->idProjetoPai = $aIdProjetoPai;
      $this->idCampoSprint = $aIdCampoSprint;
      $this->idCampoStoryPoint = $aIdCampoStoryPoint;
      $this->idCampoCompletude = $aIdCampoCompletude;
      $this->idTagToVerify = $aIdTagToVerify;
      $this->idTagVerified = $aIdTagVerified;
      $this->idTagOffsprint = $aIdTagOffsprint;
      $this->rootMantis = $aRootMantis;
      $this->ajaxTimeout = $aAjaxTimeout;
      $this->alternateTimeout = $aAlternateTimeout;
      $this->prefixosRemoviveis = $aPrefixosRemoviveis;
      $this->abreviaturas = $aAbreviaturas;
    }

    public function getIdUESA() {
      return $this->idUESA;
    }

    public function setIdUESA($aIdUESA) {
      $this->idUESA = (int) $aIdUESA;
    }

    public function getDescricaoUESA() {
      return $this->descricaoUESA;
    }

    public function setDescricaoUESA($aDescricaoUESA) {
      $this->descricaoUESA = $aDescricaoUESA;
    }

    public function getIdsUsuariosUESA() {
      return $this->idsUsuariosUESA;
    }

    public function setIdsUsuariosUESA($aIdsUsuariosUESA) {
      $this->idsUsuariosUESA = $aIdsUsuariosUESA;
    }

    public function getLogoUESA() {
      return $this->logoUESA;
    }

    public function setLogoUESA($aLogoUESA) {
      $this->logoUESA = $aLogoUESA;
    }

    public function getIdUESJ() {
      return $this->idUESJ;
    }

    public function setIdUESJ($aIdUESJ) {
      $this->idUESJ = (int) $aIdUESJ;
    }

    public function getDescricaoUESJ() {
      return $this->descricaoUESJ;
    }

    public function setDescricaoUESJ($aDescricaoUESJ) {
      $this->descricaoUESJ = $aDescricaoUESJ;
    }

    public function getIdsUsuariosUESJ() {
      return $this->idsUsuariosUESJ;
    }

    public function setIdsUsuariosUESJ($aIdsUsuariosUESJ) {
      $this->idsUsuariosUESJ = $aIdsUsuariosUESJ;
    }

    public function getLogoUESJ() {
      return $this->logoUESJ;
    }

    public function setLogoUESJ($aLogoUESJ) {
      $this->logoUESJ = $aLogoUESJ;
    }

    public function getNomeCliente() {
      return $this->nomeCliente;
    }

    public function setNomeCliente($aNomeCliente) {
      $this->nomeCliente = $aNomeCliente;
    }

    public function getIdsUsuariosGC() {
      return $this->idsUsuariosGC;
    }

    public function setIdsUsuariosGC($aIdsUsuariosGC) {
      $this->idsUsuariosGC = $aIdsUsuariosGC;
    }

    public function getIdsUsuariosUTS() {
      return $this->idsUsuariosUTS;
    }

    public function setIdsUsuariosUTS($aIdsUsuariosUTS) {
      $this->idsUsuariosUTS = $aIdsUsuariosUTS;
    }

    public function getIdsUsuariosUN() {
      return $this->idsUsuariosUN;
    }

    public function setIdsUsuariosUN($aIdsUsuariosUN) {
      $this->idsUsuariosUN = $aIdsUsuariosUN;
    }

    public function getIdProjetoPai() {
      return $this->idProjetoPai;
    }

    public function setIdProjetoPai($aIdProjetoPai) {
      $this->idProjetoPai = (int) $aIdProjetoPai;
    }

    public function getIdCampoSprint() {
      return $this->idCampoSprint;
    }

    public function setIdCampoSprint($aIdCampoSprint) {
      $this->idCampoSprint = (int) $aIdCampoSprint;
    }

    public function getIdCampoStoryPoint() {
      return $this->idCampoStoryPoint;
    }

    public function setIdCampoStoryPoint($aIdCampoStoryPoint) {
      $this->idCampoStoryPoint = (int) $aIdCampoStoryPoint;
    }

    public function getIdCampoCompletude() {
      return $this->idCampoCompletude; 
    }

    public function setIdCampoCompletude($aIdCampoCompletude) {
      $this->idCampoCompletude = (int) $aIdCampoCompletude;
    }

    public function getIdTagToVerify() {
      return  $this->idTagToVerify; 
    }

    public function setIdTagToVerify($aIdTagToVerify) {
      $this->idTagToVerify = (int) $aIdTagToVerify;
    }

    public function getIdTagVerified() {
      return $this->idTagVerified; 
    }

    public function setIdTagVerified($aIdTagVerified) {
      $this->idTagVerified = (int) $aIdTagVerified;
    }

    public function getIdTagOffsprint() {
      return $this->idTagOffsprint; 
    }

    public function setIdTagOffsprint($aIdTagOffsprint) {
      $this->idTagOffsprint = (int) $aIdTagOffsprint;
    }

    public function getRootMantis() {
      return $this->rootMantis; 
    }

    public function setRootMantis($aRootMantis) {
      $this->rootMantis = $aRootMantis;
    }

    public function getAjaxTimeout() {
      return $this->ajaxTimeout;
    }

    public function setAjaxTimeout($aAjaxTimeout) {
      $this->ajaxTimeout = (int) $aAjaxTimeout;
    }

    public function getAlternateTimeout() {
      return $this->alternateTimeout;
    }

    public function setAlternateTimeout($aAlternateTimeout) {
      $this->alternateTimeout = (int) $aAlternateTimeout;
    }

    public function getPrefixosRemoviveis() {
      return $this->prefixosRemoviveis;
    }

    public function setPrefixosRemoviveis($aPrefixosRemoviveis) {
      $this->prefixosRemoviveis = $aPrefixosRemoviveis;
    }

    public function getAbreviaturas() {
      return $this->abreviaturas;
    }

    public function setAbreviaturas($aAbreviaturas) {
      $this->abreviaturas = $aAbreviaturas;
    }

    public function salvar() {
      file_put_contents("./configuracoes.json", serialize($this));
    }
    
    public static function carregar() {
      return unserialize(file_get_contents("./configuracoes.json"));
    }
  }
  
  // Carregando valores padrão
  $configuracoes = new Configuracoes(112
                                    ,"UES-A: Unidade de Engenharia de Software Administrativo"
                                    ,"237,238,76,228,75,261,313"
                                    ,"img/uesa.png"
                                    ,111
                                    ,"UES-J: Unidade de Engenharia de Software Judicial"
                                    ,"115,264,127,219,177,104,265,278,218"
                                    ,"img/uesj.png"
                                    ,"Tribunal de Justiça de Pernambuco"
                                    ,"165,56,254,230"
                                    ,"173,167,221,227,229"
                                    ,"101,53,97,45,48,194,9,263,233,51,137,77,103,178,218,100,110,171,106,25,29,251,94,162,226,101,232,156,160,262,215,64,198,92,146,229"
                                    ,96
                                    ,19
                                    ,7
                                    ,17
                                    ,3
                                    ,4
                                    ,6
                                    ,"../mantis"
                                    ,30000
                                    ,60000
                                    ,array("UNA - "
                                          ,"UNGC - "
                                          ,"GEDES/UES - "
                                          ,"NGP - "
                                          ,"UES - "
                                          ,"UNJ1G - "
                                          ,"UNJ2G - "
                                          ,"UNJCM - "
                                          ,"GEARQ/UAD - ")
                                    ,array("Diário de Justiça Eletrônico - DJe"=>"DJE"
                                          ,"Avaliação de Estágio Probatório WEB"=>"Aval. Estag. Probatório WEB"
                                          ,"Consulta URH - Emissão de CD"=>"Consulta URH"
                                          ,"Email Estagiário/Terceirizado"=>"E-mail estag./terc."
                                          ,"Consulta Unificada de Protocolo"=>"Consulta Unif. de Protocolo"
                                          ,"JudwinPushService"=>"Judwin Push Service"
                                          ,"Consulta jurisprudência web"=>"Consulta Juris. WEB"
                                          ,"Banco Nacional de Mandados de Prisão"=>"Banco Nac. de Mand. de Prisão"
                                          ,"TJPEPushService"=>"TJPE Push Service"
                                          ,"Controle de Paradigmas Recursais"=>"Controle de Paradigmas Recur."));
                                          
  if (file_exists("./configuracoes.json")) {
    unset($configuracoes);
    $configuracoes = Configuracoes::carregar();
  } else {
    $configuracoes->salvar();
  }
?>

